import Request from '@/common/luch-request/index.js'
import base from '@/common/js/api/api.config.js'
import { ACCESS_TOKEN } from '@/common/js/utils/constants.js'

//获取缓存中的token
const getTokenStorage = () => {
	let token = '';
	try {
		token = uni.getStorageSync(ACCESS_TOKEN)
	} catch (e) {
		//TODO handle the exception
		console.log("getTokenStorage",token)
	}
	return token
};

// 创建请求实例
const http = new Request();

/**
 * 设置全局配置：
 * baseURL：请求服务地址
 * header：请求头	   
 */
http.setConfig((config) => { 
	config.baseUrl = base.url;
	config.header = {
	  ...config.header
	};
	return config
});

/**
 * 请求之前拦截器。可以使用async await 做异步操作
 */
http.interceptors.request.use((config) => { 
	config.header = {
		token: getTokenStorage(),
		authType: 1
	};
	//请求之前业务处理
	if (!token) { // 如果token不存在，return Promise.reject(config) 会取消本次请求
	   return Promise.reject(config)
	}
	
	return config
}, (config) => {
	return Promise.reject(config)
});

/**
 * 请求响应拦截器。必须使用异步函数，注意
 */
http.interceptors.response.use(async (response) => { 
	// 请求响应业务处理
	// if (response.data.code !== 200) { // 服务端返回的状态码不等于200，则reject()
	//   return Promise.reject(response)
	// }
	return response
}, (response) => { 
	// 请求错误做点什么。可以使用async await 做异步操作
	console.log(response);
	return Promise.reject(response)
});

// 可以自定义局部变量，在自定义变量里面增加拦截业务处理，如日志 权限 通知等
export { http }